[Mini-OS] Make bind_virq return the port
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 23 Nov 2007 16:25:59 +0000 (16:25 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 23 Nov 2007 16:25:59 +0000 (16:25 +0000)
Make bind_virq() return the port bound to the irq, which is useful
e.g. for masking/unmasking it.

Signed-off-by: Samuel Thibault <samuel.thibault@citrix.com>
extras/mini-os/arch/ia64/time.c
extras/mini-os/events.c
extras/mini-os/include/events.h

index 2d943e8c7a8a69b6626d4bd655054a98a1b52e71..e000ced0980124eab377bce3d6ae1772a0d14170 100644 (file)
@@ -267,7 +267,7 @@ init_time(void)
                printk("efi_get_time() failed\n");
 
        err = bind_virq(VIRQ_ITC, timer_interrupt, NULL);
-       if (err != 0) {
+       if (err == -1) {
                printk("XEN timer request chn bind failed %i\n", err);
                return;
        }
index dad8e4237760c6a31f64dd60802891d2177362cb..9174f166ed53e72fbf2bcd55cbc3c8d9e7a26bf8 100644 (file)
@@ -102,7 +102,7 @@ void unbind_evtchn(evtchn_port_t port )
        ev_actions[port].data = NULL;
 }
 
-int bind_virq(uint32_t virq, evtchn_handler_t handler, void *data)
+evtchn_port_t bind_virq(uint32_t virq, evtchn_handler_t handler, void *data)
 {
        evtchn_bind_virq_t op;
 
@@ -113,11 +113,11 @@ int bind_virq(uint32_t virq, evtchn_handler_t handler, void *data)
        if ( HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &op) != 0 )
        {
                printk("Failed to bind virtual IRQ %d\n", virq);
-               return 1;
+               return -1;
     }
     set_bit(op.port,bound_ports);
     bind_evtchn(op.port, handler, data);
-       return 0;
+       return op.port;
 }
 
 #if defined(__x86_64__)
index 5cc9fa8a9fc7fc3883b8780333e7c4c42405d575..ff202e38fe2454bf70c45404217415508c74186e 100644 (file)
@@ -26,7 +26,7 @@ typedef void (*evtchn_handler_t)(evtchn_port_t, struct pt_regs *, void *);
 
 /* prototypes */
 int do_event(evtchn_port_t port, struct pt_regs *regs);
-int bind_virq(uint32_t virq, evtchn_handler_t handler, void *data);
+evtchn_port_t bind_virq(uint32_t virq, evtchn_handler_t handler, void *data);
 evtchn_port_t bind_evtchn(evtchn_port_t port, evtchn_handler_t handler,
                                                  void *data);
 void unbind_evtchn(evtchn_port_t port);